/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.CapaFisica;
import fisica.CuidadoDeInternacionFisica;
import hibernate.objeto.CuidadoDeInternacion;

/**
 *
 * @author Gonzalo
 */
public class CuidadoDeInternacionLogica extends CapaLogica {

    /**
     * Agrega el objeto CuidadoDeInternacion en la base de datos.
     *
     *
     * @param cuidadoDeInternacion El objeto CuidadoDeInternacion a
     * agregar
     * @param idCuidadoDeInternacion El id del objeto
     * creado para su posterior recuperación
     *
     * @return true si se agregó correctamente, false en caso contrario
     */
    public static boolean agregarCuidadoDeInternacion(Object[] datosCuidadoDeInternacion, 
            CuidadoDeInternacion cuidadoDeInternacion, int[] idCuidadoDeInternacion) {

        cuidadoDeInternacion = crearObjetoCuidadoDeInternacion(
                datosCuidadoDeInternacion, cuidadoDeInternacion);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(cuidadoDeInternacion)) {
            idCuidadoDeInternacion[0] = cuidadoDeInternacion
                    .getIdCuidadoDeInternacion();
            return true;
        } else {
            return false;
        }

    }

    /**
     * Crea un objeto CuidadoDeInternacion.
     *
     * @param cuidadoDeInternacion El objeto CuidadoDeInternacion a
     * agregar
     * @return El objeto creado u obtenido
     */
    private static CuidadoDeInternacion crearObjetoCuidadoDeInternacion(
            Object[] datosCuidadoDeInternacion, 
            CuidadoDeInternacion cuidadoDeInternacion) {

        cuidadoDeInternacion.setTipoCuidadoDeInternacion(
                datosCuidadoDeInternacion[
                TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_TIPO].toString());

        return cuidadoDeInternacion;
    }


    /**
     * Retorna el objeto CuidadoDeInternacion según el id.
     *
     * @param idCuidadoDeInternacion  El id del CuidadoDeInternacion
     * @return El objeto CuidadoDeInternacion consultado, null si no existe
     */
    public static CuidadoDeInternacion getCuidadoDeInternacionPorId(
            int idCuidadoDeInternacion) {
        return CuidadoDeInternacionFisica.getCuidadoDeInternacionPorId(
                idCuidadoDeInternacion);
    }

    /**
     * Retorna todo el objeto CuidadoDeInternacion en string.
     *
     * @param cuidadoDeInternacion El objeto a escribir
     */
    public static String getCuidadoDeInternacionString(CuidadoDeInternacion cuidadoDeInternacion) {
        String cuidadoDeInternacionString =
                "idCuidadoDeInternacion: " +
                cuidadoDeInternacion.getIdCuidadoDeInternacion() + "\n";

        if (cuidadoDeInternacion.getBalanceHidroelectrolitico() != null) {
            cuidadoDeInternacionString +=
                    BalanceHidroelectroliticoLogica.getBalanceHidroelectroliticoString(
            cuidadoDeInternacion.getBalanceHidroelectrolitico());
        } else if (cuidadoDeInternacion.getCuidadoYMedicion() != null) {
            cuidadoDeInternacionString +=
                    CuidadoYMedicionLogica.getCuidadoYMedicionString(
            cuidadoDeInternacion.getCuidadoYMedicion());
        }

        return cuidadoDeInternacionString;
    }


    /**
     * Retorna todo el objeto CuidadoDeInternacion en HTML.
     *
     * @param cuidadoDeInternacion El objeto a escribir
     */
    public static String getCuidadoDeInternacionHTML(CuidadoDeInternacion cuidadoDeInternacion) {
        if (cuidadoDeInternacion.getBalanceHidroelectrolitico() != null) {
            return BalanceHidroelectroliticoLogica.getBalanceHidroelectroliticoHTML(
            cuidadoDeInternacion.getBalanceHidroelectrolitico());
        } else if (cuidadoDeInternacion.getCuidadoYMedicion() != null) {
            return CuidadoYMedicionLogica.getCuidadoYMedicionHTML(
            cuidadoDeInternacion.getCuidadoYMedicion());
        } else {
            return null;
        }
    }
}
